package com.qmo.edu.base;

import android.app.Application;
import android.os.Environment;
import android.os.Handler;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.squareup.leakcanary.LeakCanary;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.qmo.edu.R;
import com.qmo.edu.moudle.activity.LoginActivity;
import com.qmo.edu.utils.Utils;

import cn.jpush.android.api.JPushInterface;


/**
 * Created by ${} on 2019/3/25/025.
 *
 * @author cyx
 */

public class BaseApplication extends Application {
    private static BaseApplication mContext = null;
    private static Handler mMainThreadHandler = null;
    private static Thread mMainThread = null;
    private static int mMainThreadId;


    public static BaseApplication getApplication() {
        return mContext;
    }

    public static Handler getMainThreadHandler() {
        return mMainThreadHandler;
    }

    public static Thread getMainThread() {
        return mMainThread;
    }

    public static int getMainThreadId() {
        return mMainThreadId;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        init();
        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
//				.showImageOnFail(R.drawable.test)
//				.showImageOnFail(R.drawable.test)
                .cacheInMemory(true).cacheOnDisc(true).build();
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .defaultDisplayImageOptions(defaultOptions).build();

        ImageLoader.getInstance().init(config);
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);
    }

    private void init() {
        Utils.init(this);
        LeakCanary.install(this);
        Beta.autoInit = true;
        Beta.autoCheckUpgrade = true;
        Beta.canShowUpgradeActs.add(LoginActivity.class);
        Bugly.init(getApplicationContext(), "46f42c71b5", false);


        /**
         * true表示app启动自动初始化升级模块；
         * false不自动初始化
         */
        Beta.autoInit = true;

        /**
         * true表示初始化时自动检查升级
         * false表示不会自动检查升级，需要手动调用Beta.checkUpgrade()方法
         */
        Beta.autoCheckUpgrade = true;

        /**
         * 设置升级周期为60s（默认检查周期为0s），60s内SDK不重复向后台请求策略
         */
        Beta.initDelay = 1 * 1000;

        /**
         * 设置通知栏大图标，largeIconId为项目中的图片资源；
         */
        Beta.largeIconId = R.mipmap.ic_launcher_new;

        /**
         * 设置状态栏小图标，smallIconId为项目中的图片资源id;
         */
        Beta.smallIconId = R.mipmap.ic_launcher_new;

        /**
         * 设置更新弹窗默认展示的banner，defaultBannerId为项目中的图片资源Id;
         * 当后台配置的banner拉取失败时显示此banner，默认不设置则展示“loading“;
         */
        Beta.defaultBannerId = R.mipmap.ic_launcher_new;

        /**
         * 设置sd卡的Download为更新资源保存目录;
         * 后续更新资源会保存在此目录，需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
         */
        Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

        /**
         * 点击过确认的弹窗在APP下次启动自动检查更新时会再次显示;
         */
        Beta.showInterruptedStrategy = true;

        /**
         * 设置是否显示消息通知
         */
        Beta.enableNotification = true;

        /**
         * 使用默认弹窗
         */
        Beta.canShowApkInfo = true;
        /**
         * 关闭或开启热更新能力,默认开启
         */
        Beta.enableHotfix = false;

        /**
         * 只允许在MainActivity上显示更新弹窗，其他activity上不显示弹窗;
         * 不设置会默认所有activity都可以显示弹窗;
         */
        // 不在登录activity上显示弹窗
//        Beta.canNotShowUpgradeActs.add(MainActivity.class);

    }
}
